\paragraph{Purpose}
This phase will move the intended code that will be translated into kernels that will run on the device to a separate kernel file.  GPU programs have code that runs on both the host machine and the GPU device.  At this point it is time to separate our code.  This is a little more complicated than putting computation code into a kernel file.  We also need to separate variables.  This means allocating memory, and determining where the data needs to be moved between the device and host memory.   Also, one last change is made to the preprocessor directives, we add includes for the new kernel file.
